# SSL VPN网关 Makefile

# 编译器设置
CC = gcc
CFLAGS = -Wall -Wextra -O2 -std=gnu99
LDFLAGS = -lpthread -lssl -lcrypto

# 目标文件和可执行文件名
TARGET = sslvpn_gateway
SRCS = sslvpn_gateway.c
OBJS = $(SRCS:.c=.o)

# 默认目标
all: $(TARGET)

# 编译目标
$(TARGET): $(OBJS)
	$(CC) -o $@ $^ $(LDFLAGS)

# 编译源文件为目标文件
%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

# 清理编译生成的文件
clean:
	rm -f $(OBJS) $(TARGET)

# 安装程序
install:
	mkdir -p /usr/local/bin
	cp $(TARGET) /usr/local/bin/
	mkdir -p /etc/sslvpn/certs
	chmod 700 /etc/sslvpn/certs

# 卸载程序
uninstall:
		rm -f /usr/local/bin/$(TARGET)

# 列出所有目标
.PHONY: all clean install uninstall

# 帮助信息
thelp:
	@echo "可用目标："
	@echo "  all     - 编译程序（默认）"
	@echo "  clean   - 清理编译生成的文件"
	@echo "  install - 安装程序到系统"
	@echo "  uninstall - 从系统卸载程序"
	@echo "  thelp   - 显示此帮助信息"

# 编译选项说明
# -Wall -Wextra: 显示所有警告信息
# -O2: 优化级别2
# -std=gnu99: 使用GNU C99标准

# 链接库说明
# -lpthread: POSIX线程库
# -lssl -lcrypto: OpenSSL库，提供SSL/TLS加密功能